home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 41 / Amiga Format CD41 (1999-06)(Future Publishing)(GB)[!][issue 1999-07].iso / -seriously_amiga- / misc / nilnull / null / misc.c < prev    next >
C/C++ Source or Header  |  1999-04-19  |  2KB  |  104 lines

  1. /*
  2. **      $VER: misc.c 1.0 (4.4.99)
  3. **
  4. **      misc DOS packet routines
  5. **
  6. **      modified 1999 by Andreas R. Kleinert
  7. **      Original Copyright below.
  8. */
  9.  
  10. /*
  11.  *  misc.c  - support routines - Phillip Lindsay (C) Commodore 1986
  12.  *  You may freely distribute this source and use it for Amiga Development -
  13.  *  as long as the Copyright notice is left intact.
  14.  *
  15.  * 30-SEP-86
  16.  *
  17.  */
  18.  
  19. #define __USE_SYSBASE
  20.  
  21. #include <exec/types.h>
  22. #include <exec/nodes.h>
  23. #include <exec/lists.h>
  24. #include <exec/ports.h>
  25. #include <exec/libraries.h>
  26. #include <exec/devices.h>
  27. #include <exec/io.h>
  28. #include <exec/memory.h>
  29.  
  30. #include <dos/dos.h>
  31. #include <dos/dosextens.h>
  32. #include <dos/filehandler.h>
  33.  
  34. #include <devices/console.h>
  35.  
  36. #include <proto/exec.h>
  37. #include <proto/dos.h>
  38.  
  39. #include <stdio.h>
  40. #include <stdlib.h>
  41. #include <string.h>
  42.  
  43. #include "misc.h"
  44.  
  45.  
  46. /* returnpkt() - packet support routine
  47.  * here is the guy who sends the packet back to the sender...
  48.  *
  49.  * (I modeled this just like the BCPL routine [so its a little redundant] )
  50.  */
  51.  
  52. void __saveds returnpktplain(struct DosPacket *packet, struct Process *myproc)
  53. {
  54.  returnpkt(packet, myproc, packet->dp_Res1, packet->dp_Res2);
  55. }
  56.  
  57.  
  58. void __saveds returnpkt(struct DosPacket *packet, struct Process *myproc, ULONG res1, ULONG res2)
  59. {
  60.  struct Message *mess;
  61.  struct MsgPort *replyport;
  62.  
  63.  if(!packet) return;
  64.  if(!myproc) return;
  65.  
  66.  
  67.  packet->dp_Res1          = res1;
  68.  packet->dp_Res2          = res2;
  69.  replyport                = packet->dp_Port;
  70.  mess                     = packet->dp_Link;
  71.  
  72.  if(!replyport) return;
  73.  if(!mess)      return;
  74.  
  75.  packet->dp_Port          = &myproc->pr_MsgPort;
  76.  mess->mn_Node.ln_Name    = (char *) packet;
  77.  
  78.  PutMsg(replyport, mess);
  79. }
  80.  
  81.  
  82. /*
  83.  * taskwait() ... Waits for a message to arrive at your port and
  84.  *   extracts the packet address which is returned to you.
  85.  */
  86.  
  87. struct DosPacket * __saveds taskwait(struct Process *myproc)
  88. {
  89.  struct MsgPort *myport;
  90.  
  91.  myport = &myproc->pr_MsgPort;
  92.  if(myport)
  93.   {
  94.    struct Message *mymess;
  95.  
  96.    WaitPort(myport);
  97.    mymess = GetMsg(myport);
  98.  
  99.    if(mymess) return((struct DosPacket *)mymess->mn_Node.ln_Name);
  100.   }
  101.  
  102.  return(NULL);
  103. }
  104.